



<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#FFF">
  <link rel="apple-touch-icon" sizes="180x180" href="/lostyu/images/apple-touch-icon.png">

<link rel="icon" type="image/ico" sizes="32x32" href="/lostyu/images/favicon.ico">
  <meta http-equiv="Cache-Control" content="no-transform">
  <meta http-equiv="Cache-Control" content="no-siteapp">


<link rel="alternate" type="application/rss+xml" title="Eden" href="https://luhongdeng.gitee.io/rss.xml" />
<link rel="alternate" type="application/atom+xml" title="Eden" href="https://luhongdeng.gitee.io/atom.xml" />
<link rel="alternate" type="application/json" title="Eden" href="https://luhongdeng.gitee.io/feed.json" />

<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Mulish:300,300italic,400,400italic,700,700italic%7CFredericka%20the%20Great:300,300italic,400,400italic,700,700italic%7CNoto%20Serif%20JP:300,300italic,400,400italic,700,700italic%7CNoto%20Serif%20SC:300,300italic,400,400italic,700,700italic%7CInconsolata:300,300italic,400,400italic,700,700italic&display=swap&subset=latin,latin-ext">

<link rel="stylesheet" href="/lostyu/css/app.css?v=0.2.5">

  

<link rel="canonical" href="https://luhongdeng.gitee.io/2020/12/23/zookeeper/">



  <title>
zookeeper |
我的金子，只给千寻 = Eden</title>
<meta name="generator" content="Hexo 5.3.0"></head>
<body itemscope itemtype="http://schema.org/WebPage">
  <div id="loading">
    <div class="cat">
      <div class="body"></div>
      <div class="head">
        <div class="face"></div>
      </div>
      <div class="foot">
        <div class="tummy-end"></div>
        <div class="bottom"></div>
        <div class="legs left"></div>
        <div class="legs right"></div>
      </div>
      <div class="paw">
        <div class="hands left"></div>
        <div class="hands right"></div>
      </div>
    </div>
  </div>
  <div id="container">
    <header id="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="inner">
        <div id="brand">
          <div class="pjax">
          
  <h1 itemprop="name headline">zookeeper
  </h1>
  
<div class="meta">
  <span class="item" title="Created: 2020-12-23 22:46:37">
    <span class="icon">
      <i class="ic i-calendar"></i>
    </span>
    <span class="text">Posted on</span>
    <time itemprop="dateCreated datePublished" datetime="2020-12-23T22:46:37+08:00">2020-12-23</time>
  </span>
</div>


          </div>
        </div>
        <nav id="nav">
  <div class="inner">
    <div class="toggle">
      <div class="lines" aria-label="Toggle navigation bar">
        <span class="line"></span>
        <span class="line"></span>
        <span class="line"></span>
      </div>
    </div>
    <ul class="menu">
      <li class="item title"><a href="/lostyu/" rel="start">我的金子，只给千寻</a></li>
    </ul>
    <ul class="right">
      <li class="item theme">
        <i class="ic i-sun"></i>
      </li>
      <li class="item search">
        <i class="ic i-search"></i>
      </li>
    </ul>
  </div>
</nav>

      </div>
      <div id="imgs" class="pjax">
        <ul>
          <li class="item" data-background-image="https://tva4.sinaimg.cn/large/6833939bly1giclj9410cj20zk0m8h12.jpg"></li>
          <li class="item" data-background-image="https://tva4.sinaimg.cn/large/6833939bly1giclffsa1cj20zk0m811l.jpg"></li>
          <li class="item" data-background-image="https://tva4.sinaimg.cn/large/6833939bly1giclfdu6exj20zk0m87hw.jpg"></li>
          <li class="item" data-background-image="https://tva4.sinaimg.cn/large/6833939bly1gicitcxhpij20zk0m8hdt.jpg"></li>
          <li class="item" data-background-image="https://tva4.sinaimg.cn/large/6833939bly1gipesng5oej20zk0m87d4.jpg"></li>
          <li class="item" data-background-image="https://tva4.sinaimg.cn/large/6833939bly1giclh0m9pdj20zk0m8hdt.jpg"></li>
        </ul>
      </div>
    </header>
    <div id="waves">
      <svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto">
        <defs>
          <path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z" />
        </defs>
        <g class="parallax">
          <use xlink:href="#gentle-wave" x="48" y="0" />
          <use xlink:href="#gentle-wave" x="48" y="3" />
          <use xlink:href="#gentle-wave" x="48" y="5" />
          <use xlink:href="#gentle-wave" x="48" y="7" />
        </g>
      </svg>
    </div>
    <main>
      <div class="inner">
        <div id="main" class="pjax">
          
  <div class="article wrap">
    
<div class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
<i class="ic i-home"></i>
<span><a href="/lostyu/">Home</a></span>
</div>

    <article itemscope itemtype="http://schema.org/Article" class="post block" lang="en">
  <link itemprop="mainEntityOfPage" href="https://luhongdeng.gitee.io/2020/12/23/zookeeper/">

  <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
    <meta itemprop="image" content="/lostyu/images/avatar.jpg">
    <meta itemprop="name" content="Eden的个人世界">
    <meta itemprop="description" content=", ">
  </span>

  <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
    <meta itemprop="name" content="Eden">
  </span>

  <div class="body md" itemprop="articleBody">
    

    <p>ZooKeeper 是一个<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTUlODglODYlRTUlQjglODMlRTUlQkMlOEYvMTkyNzYyMzI=">分布式</span>的，开放源码的<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTUlODglODYlRTUlQjglODMlRTUlQkMlOEYlRTUlQkElOTQlRTclOTQlQTglRTclQTglOEIlRTUlQkElOEYvOTg1NDQyOQ==">分布式应用程序</span>协调服务，是<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9Hb29nbGU="> Google</span> 的 Chubby 一个<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTUlQkMlODAlRTYlQkElOTAvMjQ2MzM5">开源</span>的实现，是 Hadoop 和<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9IYmFzZS83NjcwMjEz"> Hbase</span> 的重要组件。它是一个为分布式应用提供一致性服务的软件，提供的功能包括：配置维护、域名服务、分布式同步、组服务等。</p>
<p>ZooKeeper 的目标就是封装好复杂易出错的关键服务，将简单易用的接口和性能高效、功能稳定的系统提供给用户。</p>
<h3 id="1-理解zookeeper"><a class="markdownIt-Anchor" href="#1-理解zookeeper">#</a> 1、理解 zookeeper</h3>
<ol>
<li>
<h5 id="为什么需要zookeeper"><a class="markdownIt-Anchor" href="#为什么需要zookeeper">#</a> 为什么需要 Zookeeper</h5>
<p>我们需要一个像单机但是又比单机更可靠的东西</p>
<ul>
<li>leader 在团队中的协调作用</li>
<li>内存、单机</li>
<li>集群、可靠</li>
<li>当信息还没同步完成时，不对外提供服务</li>
<li>同步时间压缩的更短</li>
<li>比如我们搭建了一个数据库集群，里面有一个 Master，多个 Slave，Master 负责写，Slave 只读，我们需要一个系统，来告诉客户端，哪个是 Master。如果是单机一旦这个机器挂了，客户端将无法知道到底哪个是 Master。于是开始进行拓展，拓展成三台服务器的集群。如果我在其中一台机器修改了 Master 的 ip，同步到其他两台。需要这个存储 master 信息的服务器集群，做到当信息还没同步完成时，不对外提供服务，阻塞住查询请求，等待信息同步完成，再给查询请求返回信息。</li>
</ul>
</li>
<li>
<h5 id="zookeeper诞生历史"><a class="markdownIt-Anchor" href="#zookeeper诞生历史">#</a> Zookeeper 诞生历史</h5>
<blockquote>
<p>ZooKeeper 最早起源于雅虎研究院的一个研究小组。在当时，研究人员发现，在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调，但是这些系统往往都存在分布式单点问题。所以，雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架，以便让开发人员将精力集中在处理业务逻辑上。<br>
关于 “ZooKeeper” 这个项目的名字，其实也有一段趣闻。在立项初期，考虑到之前内部很多项目都是使用动物的名字来命名的（例如著名的 Pig 项目), 雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家 RaghuRamakrishnan 开玩笑地说：“在这样下去，我们这儿就变成动物园了！” 此话一出，大家纷纷表示就叫动物园管理员吧一一一因为各个以动物命名的分布式组件放在一起，雅虎的整个分布式系统看上去就像一个大型的动物园了，而 ZooKeeper 正好要用来进行分布式环境的协调一一于是，ZooKeeper 的名字也就由此诞生了。</p>
</blockquote>
<p>无单点问题的分布式协调框架，精力集中在处理业务逻辑</p>
</li>
<li>
<h5 id="zookeeper是什么"><a class="markdownIt-Anchor" href="#zookeeper是什么">#</a> Zookeeper 是什么</h5>
<ul>
<li>
<p>ZooKeeper: A Distributed Coordination Service for Distributed Applications</p>
</li>
<li>
<p>ZooKeeper 是开源的高性能的分布式应用协调系统，一个高性能的分布式数据一致性解决方案</p>
</li>
</ul>
</li>
<li>
<h5 id="zookeeper5大特点"><a class="markdownIt-Anchor" href="#zookeeper5大特点">#</a> Zookeeper5 大特点</h5>
<ul>
<li>
<p>顺序一致性</p>
<blockquote>
<p>客户端发给服务端的消息 Zookeeper 会按照发送消息一条一条的执行</p>
</blockquote>
</li>
<li>
<p>原子性</p>
<blockquote>
<p>一系列的操作要么成功要么不成功，不可能完成一部分一部分失败，而且在完成之前对外是没有显现的</p>
</blockquote>
</li>
<li>
<p>单一视图</p>
<blockquote>
<p>在 Zookeeper 集群中无论链接的是哪个，所看到的都是一致的</p>
</blockquote>
</li>
<li>
<p>可靠性</p>
<blockquote>
<p>节点数据会一直保留，直到另外的操作写掉了才发生变化</p>
</blockquote>
</li>
<li>
<p>及时性</p>
<blockquote>
<p>保证一定的时间段内客户端能从服务器读到最新的状态</p>
</blockquote>
</li>
</ul>
</li>
<li>
<p>集群架构</p>
<p><img data-src="https://image-static.segmentfault.com/260/947/2609475003-5cd8e248e889b_articlex" alt="img"></p>
</li>
<li>
<p>Zookeeper 的作用</p>
<ol>
<li>
<p>CAPCAP 原则又称 CAP 定理，指的是在一个分布式系统中，一致性（Consistency）、可用性（Availability）、分区容错性（Partition tolerance）。CAP 原则指的是，这三个要素最多只能同时实现两点，不可能三者兼顾。</p>
<blockquote>
<p>Zookeeper 采用一致性加分区容错性，能得到一致的数据结果，同时系统对网络具备容错性，但它不能保证每次服务请求的可用性</p>
</blockquote>
</li>
<li>
<p>Zookeeper 的作用</p>
<p><img data-src="image-20201207232525261.png" alt="image-20201207232525261"></p>
<ul>
<li>分布式服务注册与订阅</li>
<li>统一文件配置</li>
<li>生成分布式唯一 ID</li>
<li>Master 节点选举</li>
<li>分布式锁</li>
</ul>
</li>
</ol>
</li>
</ol>
<h3 id="2-安装-配置"><a class="markdownIt-Anchor" href="#2-安装-配置">#</a> 2、安装、配置</h3>
<h3 id="3-节点znode基本数据模型"><a class="markdownIt-Anchor" href="#3-节点znode基本数据模型">#</a> 3、节点 znode（基本数据模型）</h3>
<ol>
<li>
<p>树结构，在节点中保存属性信息、路径信息和数据信息</p>
<p><img data-src="image-20201207233203581.png" alt="image-20201207233203581"></p>
</li>
<li>
<p>节点性质</p>
<p>每个节点都是树形结构，相当于 Linux 的文件目录</p>
<p>每个节点都是 znode，里面包含数据，也可以有子节点</p>
<p>点分为永久节点和临时节点（session 失效，也就是客户端端口后，临时节点消失）</p>
<p>每个 znode 都有版本号，每当数据变化，版本号会累加（乐观锁）</p>
<p>删除或修改节点，版本号不匹配的话（版本号已过期），会报错</p>
<p>每个节点储存的数据不易过大，几 k 即可</p>
<p>节点可以设置权限，用来限制用户的访问</p>
<p>Zookeeper 保证读和写都是原子操作，且每次读写操作都是对数据的完整性读取或完整写入</p>
</li>
<li>
<p>节点类型</p>
<p>持久节点</p>
<p>临时节点   集群管理</p>
<p>顺序节点（可以是持久也可以是非持久）</p>
<p><img data-src="image-20201207234551307.png" alt="image-20201207234551307"></p>
</li>
<li>
<p>节点属性</p>
<p>dataVersion</p>
<p>cversion</p>
<p>aclVersion</p>
</li>
</ol>
<h3 id="4-常用命令"><a class="markdownIt-Anchor" href="#4-常用命令">#</a> 4、常用命令</h3>
<ol>
<li>启动</li>
<li>链接 Zookeeper</li>
<li>查看节点 ls</li>
<li>查看节点状态 stat</li>
<li>查看节点的数据和状态 get</li>
<li>创建 create</li>
<li>删除 delete</li>
<li>修改节点 set</li>
<li>创建顺序节点 -s</li>
<li>创建临时节点 -e</li>
<li>条件更新 -v dataVersion</li>
</ol>
<h3 id="5-watch机制"><a class="markdownIt-Anchor" href="#5-watch机制">#</a> 5、watch 机制</h3>
<p><img data-src="image-20201208000706579.png" alt="image-20201208000706579"></p>
<p>使用场景：统一资源配置</p>
<p>watcher 事件类型</p>
<p><img data-src="image-20201208001026444.png" alt="image-20201208001026444"></p>
<h3 id="6-acl-权限控制"><a class="markdownIt-Anchor" href="#6-acl-权限控制">#</a> 6、Acl 权限控制</h3>
<p>​			access control list 权限控制</p>
<p>​			它使用权限位来允许 / 禁止对节点及其所操作域的各种操作</p>
<p>​			Acl 仅与特定的 znode 有关，与子节点无关</p>
<pre><code>		&gt; ACL [scheme 采用的权限机制：id用户：permissions 权限组合字符串
</code></pre>
<p>​			permissions</p>
<p>​			world</p>
<p>​			auth</p>
<p>​			digest 密文</p>
<p>​			ip</p>
<p>​			super</p>
<p>​			权限字符串 crdwa</p>
<p>​			使用场景</p>
<p>​			区分开发、测试、运维，防止误操作</p>
<p>​			可以针对不同 IP 而产生具体的配置，更安全</p>
<h3 id="7-代码实操"><a class="markdownIt-Anchor" href="#7-代码实操">#</a> 7、代码实操</h3>

  </div>

   <footer>

    <div class="meta">
  <span class="item">
    <span class="icon">
      <i class="ic i-calendar-check"></i>
    </span>
    <span class="text">Edited on</span>
    <time title="Modified: 2020-12-23 23:26:16" itemprop="dateModified" datetime="2020-12-23T23:26:16+08:00">2020-12-23</time>
  </span>
</div>

      
<div class="reward">
  <button><i class="ic i-heartbeat"></i> Donate</button>
  <p>Give me a cup of [coffee]~(￣▽￣)~*</p>
  <div id="qr">
      
      <div>
        <img data-src="/lostyu/images/wechatpay.png" alt="Eden的个人世界 WeChat Pay">
        <p>WeChat Pay</p>
      </div>
      
      <div>
        <img data-src="/lostyu/images/alipay.png" alt="Eden的个人世界 Alipay">
        <p>Alipay</p>
      </div>
      
      <div>
        <img data-src="/lostyu/images/paypal.png" alt="Eden的个人世界 PayPal">
        <p>PayPal</p>
      </div>
  </div>
</div>

      

<div id="copyright">
<ul>
  <li class="author">
    <strong>Post author:  </strong>Eden的个人世界 <i class="ic i-at"><em>@</em></i>Eden
  </li>
  <li class="link">
    <strong>Post link: </strong>
    <a href="https://luhongdeng.gitee.io/2020/12/23/zookeeper/" title="zookeeper">https://luhongdeng.gitee.io/2020/12/23/zookeeper/</a>
  </li>
  <li class="license">
    <strong>Copyright Notice:  </strong>All articles in this blog are licensed under <span class="exturl" data-url="aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzQuMC9kZWVkLnpo"><i class="ic i-creative-commons"><em>(CC)</em></i>BY-NC-SA</span> unless stating additionally.
  </li>
</ul>
</div>

  </footer>

</article>

  </div>
  

<div class="post-nav">
    <div class="item left">
      

  <a href="/lostyu/2020/12/23/hello-world/" itemprop="url" rel="prev" data-background-image="https:&#x2F;&#x2F;tva4.sinaimg.cn&#x2F;mw690&#x2F;6833939bly1gipet4bz0yj20zk0m8e81.jpg" title="Hello World">
  <span class="type">Previous Post</span>
  <span class="category"><i class="ic i-flag"></i> </span>
  <h3>Hello World</h3>
  </a>

    </div>
    <div class="item right">
      

  <a href="/lostyu/2020/12/23/dubbo/" itemprop="url" rel="next" data-background-image="https:&#x2F;&#x2F;tva4.sinaimg.cn&#x2F;mw690&#x2F;6833939bly1giclga70tsj20zk0m84mr.jpg" title="dubbo">
  <span class="type">Next Post</span>
  <span class="category"><i class="ic i-flag"></i> </span>
  <h3>dubbo</h3>
  </a>

    </div>
</div>

  
  <div class="wrap" id="comments"></div>


        </div>
        <div id="sidebar">
          

<div class="inner">

  <div class="panels">
    <div class="inner">
      <div class="contents panel pjax" data-title="Contents">
          <ol class="toc"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-%E7%90%86%E8%A7%A3zookeeper"><span class="toc-number">1.</span> <span class="toc-text"> 1、理解 zookeeper</span></a><ol class="toc-child"><li class="toc-item toc-level-5"><a class="toc-link" href="#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81zookeeper"><span class="toc-number">1.0.1.</span> <span class="toc-text"> 为什么需要 Zookeeper</span></a></li><li class="toc-item toc-level-5"><a class="toc-link" href="#zookeeper%E8%AF%9E%E7%94%9F%E5%8E%86%E5%8F%B2"><span class="toc-number">1.0.2.</span> <span class="toc-text"> Zookeeper 诞生历史</span></a></li><li class="toc-item toc-level-5"><a class="toc-link" href="#zookeeper%E6%98%AF%E4%BB%80%E4%B9%88"><span class="toc-number">1.0.3.</span> <span class="toc-text"> Zookeeper 是什么</span></a></li><li class="toc-item toc-level-5"><a class="toc-link" href="#zookeeper5%E5%A4%A7%E7%89%B9%E7%82%B9"><span class="toc-number">1.0.4.</span> <span class="toc-text"> Zookeeper5 大特点</span></a></li></ol></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-%E5%AE%89%E8%A3%85-%E9%85%8D%E7%BD%AE"><span class="toc-number">2.</span> <span class="toc-text"> 2、安装、配置</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-%E8%8A%82%E7%82%B9znode%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B"><span class="toc-number">3.</span> <span class="toc-text"> 3、节点 znode（基本数据模型）</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4"><span class="toc-number">4.</span> <span class="toc-text"> 4、常用命令</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5-watch%E6%9C%BA%E5%88%B6"><span class="toc-number">5.</span> <span class="toc-text"> 5、watch 机制</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6-acl-%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6"><span class="toc-number">6.</span> <span class="toc-text"> 6、Acl 权限控制</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7-%E4%BB%A3%E7%A0%81%E5%AE%9E%E6%93%8D"><span class="toc-number">7.</span> <span class="toc-text"> 7、代码实操</span></a></li></ol>
      </div>
      <div class="related panel pjax" data-title="Related">
      </div>
      <div class="overview panel" data-title="Overview">
        <div class="author" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <img class="image" itemprop="image" alt="Eden的个人世界"
      data-src="/lostyu/images/avatar.jpg">
  <p class="name" itemprop="name">Eden的个人世界</p>
  <div class="description" itemprop="description"></div>
</div>

<nav class="state">
    <div class="item posts">
      <a href="/lostyu/archives/">
        <span class="count">5</span>
        <span class="name">posts</span>
      </a>
    </div>
</nav>

<div class="social">
      <span class="exturl item github" data-url="aHR0cHM6Ly9naXRodWIuY29tL3lvdXJuYW1l" title="https:&#x2F;&#x2F;github.com&#x2F;yourname"><i class="ic i-github"></i></span>
      <span class="exturl item twitter" data-url="aHR0cHM6Ly90d2l0dGVyLmNvbS95b3VybmFtZQ==" title="https:&#x2F;&#x2F;twitter.com&#x2F;yourname"><i class="ic i-twitter"></i></span>
      <span class="exturl item zhihu" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3Blb3BsZS95b3VybmFtZQ==" title="https:&#x2F;&#x2F;www.zhihu.com&#x2F;people&#x2F;yourname"><i class="ic i-zhihu"></i></span>
      <span class="exturl item music" data-url="aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvdXNlci9ob21lP2lkPXlvdXJpZA==" title="https:&#x2F;&#x2F;music.163.com&#x2F;#&#x2F;user&#x2F;home?id&#x3D;yourid"><i class="ic i-cloud-music"></i></span>
      <span class="exturl item weibo" data-url="aHR0cHM6Ly93ZWliby5jb20veW91cm5hbWU=" title="https:&#x2F;&#x2F;weibo.com&#x2F;yourname"><i class="ic i-weibo"></i></span>
      <span class="exturl item about" data-url="aHR0cHM6Ly9hYm91dC5tZS95b3VybmFtZQ==" title="https:&#x2F;&#x2F;about.me&#x2F;yourname"><i class="ic i-address-card"></i></span>
</div>

<ul class="menu">
  
    
  <li class="item">
    <a href="/lostyu/" rel="section"><i class="ic i-home"></i>Home</a>
  </li>


</ul>

      </div>
    </div>
  </div>

  <ul id="quick">
    <li class="prev pjax">
        <a href="/lostyu/2020/12/23/hello-world/" rel="prev" title="Previous Post"><i class="ic i-chevron-left"></i></a>
    </li>
    <li class="up"><i class="ic i-arrow-up"></i></li>
    <li class="down"><i class="ic i-arrow-down"></i></li>
    <li class="next pjax">
        <a href="/lostyu/2020/12/23/dubbo/" rel="next" title="Next Post"><i class="ic i-chevron-right"></i></a>
    </li>
    <li class="percent"></li>
  </ul>
</div>


        </div>
        <div class="dimmer"></div>
      </div>
    </main>
    <footer id="footer">
      <div class="inner">
        <div class="widgets">
          
<div class="rpost pjax">
  <h2>Random Posts</h2>
  <ul>
      
  <li class="item">
    
<div class="breadcrumb">
</div>

    <span><a href="/lostyu/2020/12/23/Java%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/" title="Java网络编程">Java网络编程</a></span>
  </li>

      
  <li class="item">
    
<div class="breadcrumb">
</div>

    <span><a href="/lostyu/2020/12/23/dubbo/" title="dubbo">dubbo</a></span>
  </li>

      
  <li class="item">
    
<div class="breadcrumb">
</div>

    <span><a href="/lostyu/2020/12/23/hello-world/" title="Hello World">Hello World</a></span>
  </li>

      
  <li class="item">
    
<div class="breadcrumb">
</div>

    <span><a href="/lostyu/2020/12/23/io%E6%B5%81%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/" title="io流常用操作..o">io流常用操作..o</a></span>
  </li>

      
  <li class="item">
    
<div class="breadcrumb">
</div>

    <span><a href="/lostyu/2020/12/23/zookeeper/" title="zookeeper">zookeeper</a></span>
  </li>

  </ul>
</div>
<div>
  <h2>Recent Comments</h2>
  <ul class="leancloud-recent-comment"></ul>
</div>

        </div>
        <div class="status">
  <div class="copyright">
    
    &copy; 2010 – 
    <span itemprop="copyrightYear">2020</span>
    <span class="with-love">
      <i class="ic i-sakura rotate"></i>
    </span>
    <span class="author" itemprop="copyrightHolder">Eden的个人世界 @ 我的金子，只给千寻</span>
  </div>
  <div class="powered-by">
    Powered by <span class="exturl" data-url="aHR0cHM6Ly9oZXhvLmlv">Hexo</span> & Theme.<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2FtZWhpbWUvaGV4by10aGVtZS1zaG9rYQ==">Shoka</span>
  </div>
</div>

      </div>
    </footer>
  </div>
<script data-config type="text/javascript">
  var LOCAL = {
    path: '2020/12/23/zookeeper/',
    favicon: {
      show: "（●´3｀●）Goooood",
      hide: "(´Д｀)Booooom"
    },
    search : {
      placeholder: "Search for Posts",
      empty: "We didn't find any results for the search: ${query}",
      stats: "${hits} results found in ${time} ms"
    },
    valine: true,fancybox: true,copyright: 'Copied to clipboard successfully! <br> All articles in this blog are licensed under <i class="ic i-creative-commons"></i>BY-NC-SA.',
    ignores : [
      function(uri) {
        return uri.includes('#');
      },
      function(uri) {
        return new RegExp(LOCAL.path+"$").test(uri);
      }
    ]
  };
</script>

<script src="https://cdn.polyfill.io/v2/polyfill.js"></script>

<script src="//cdn.jsdelivr.net/combine/npm/pace-js@1.0.2/pace.min.js,npm/pjax@0.2.8/pjax.min.js,npm/whatwg-fetch@3.4.0/dist/fetch.umd.min.js,npm/animejs@3.2.0/lib/anime.min.js,npm/algoliasearch@4/dist/algoliasearch-lite.umd.js,npm/instantsearch.js@4/dist/instantsearch.production.min.js,npm/lozad@1/dist/lozad.min.js,npm/quicklink@2/dist/quicklink.umd.js"></script>

<script src="/lostyu/js/app.js?v=0.2.5"></script>




</body>
</html>
